#ifndef YIGBASEGRAPHIC_H
#define YIGBASEGRAPHIC_H

// System includes
#include <QObject>
#include <QGraphicsItem>
#include <QPen>

/**
*   YigBaseGraphic
*   Abstract base class for yig graphic classes
*/
class YigBaseGraphic : public QObject
{
    Q_OBJECT

public:

    /**
    *   @enum GraphicType used for collision parsing
    *   @value SynthGraphicType Used for the main center synth graphic ellipse
    *   @value ModFieldType Used for the outer field ellipses of synths
    *   @value ModFieldType2 Used for the inner-outer field ellipses of synths
    *   @value SignalArrow Used for the arrows around the ellipse for auto cables
    */
    enum GraphicType
    {
        SynthGraphicType = QGraphicsItem::UserType + 1, // Used for the main center synth graphic ellipse
        ModFieldType = QGraphicsItem::UserType + 2, // Used for the outer field ellipses of synths
        ModFieldType2 = QGraphicsItem::UserType + 3, // Used for the inner-outer field ellipses of synths
        SignalArrow = QGraphicsItem::UserType + 4 // Used for the arrows around the ellipse for auto cables
    };

    /**
    *   YigBaseGraphic constructor
    */
    YigBaseGraphic();

    virtual ~YigBaseGraphic();

    /**
    *   keyboardDelete pure virtual method for deleting from the keyboard
    */
    //virtual void keyboardDelete() = 0;

    /**
    *   updatePos pure virtual method for updating position on the network
    *
    */
    virtual void updatePos(const QPointF &pos) = 0;


    static QPen localUserHighlight, otherUserHighlight;
};

#endif // YIGBASEGRAPHIC_H
